/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package manejadores;

import entidades.Provincia;
import interfaz.Entidad;
import interfaz.Manejador;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import persistencia.Conexion;

/**
 *
 * @author Snailin
 */
public class ManejadorDeProvincia implements Manejador{
    private Conexion conexion=null;
    private static ManejadorDeProvincia instancia=null;
    private ResultSet rs=null;
    private PreparedStatement stmt=null;
    private ArrayList<Provincia>provincias=null;

    public static ManejadorDeProvincia getInstancia() {
        if(instancia==null){
        instancia=new ManejadorDeProvincia();
        }
        return instancia;
    }

    private ManejadorDeProvincia (){
        conexion=Conexion.getInstancia();

    }

    public ArrayList<Provincia>getProvincias(){
        provincias=new ArrayList<Provincia>();
        String sql="SELECT * FROM provincia";
        stmt=conexion.hacerEnunciado(sql);
        rs=conexion.hacerConsulta(sql);
        try {
            while (rs.next()) {
             Provincia provincia=new Provincia(rs.getInt(1), rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5), rs.getString(6));
             provincias.add(provincia);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProvincia.class.getName()).log(Level.SEVERE, null, ex);
        }

    return provincias;

    }

    public int agregar(Entidad provincia) {
        int fila=0;
            String sql="INSERT INTO provincia (id_provincia, distrito_municipal, paraje, seccion, sector, direccion)VALUES(0, ?, ?, ?, ?, ?)";
            stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setString(1, ((Provincia) (provincia)).getDistritoMunicpal());
            stmt.setString(2, ((Provincia) (provincia)).getParaje());
            stmt.setString(3, ((Provincia) (provincia)).getSeccion());
            stmt.setString(4, ((Provincia) (provincia)).getSector());
            stmt.setString(5, ((Provincia) (provincia)).getDireccion());
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProvincia.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;
    }

    public int eliminar(int id) {
          int fila=0;
          String sql="DELETE FROM provincia WHERE id_provincia = ? ";
            stmt=conexion.hacerEnunciado(sql);
        try {
            stmt.setInt(1, id);
            fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProvincia.class.getName()).log(Level.SEVERE, null, ex);
        }
        return fila;
    }

    public int modificar(Entidad provincia, int id) {
              int fila=0;
              String sql="UPDATE provincia SET  distrito_municipal = ? , paraje = ?, seccion = ?, sector = ? , direccion = ?  WHERE id_provincia = ? ; ";
              stmt=conexion.hacerEnunciado(sql);
             try {
                stmt.setString(1, ((Provincia) (provincia)).getDistritoMunicpal());
                stmt.setString(2, ((Provincia) (provincia)).getParaje());
                stmt.setString(3, ((Provincia) (provincia)).getSeccion());
                stmt.setString(4, ((Provincia) (provincia)).getSector());
                stmt.setString(5, ((Provincia) (provincia)).getDireccion());
                stmt.setInt(6, id);
                fila=stmt.executeUpdate();
        } catch (SQLException ex) {
            Logger.getLogger(ManejadorDeProvincia.class.getName()).log(Level.SEVERE, null, ex);
        }

        return fila;
    }

}
